ποΈGitΠ―ΡΠ°ποΈ
.specify/templates/spec-template.md 4e48e64e786b58d7c73280f7aa6ebf55be9e53e5 (4e48e64e) Text, 6.56 KB
Feature Specification: [FEATURE NAME]
Feature Branch: T383838[###-feature-name]
Created: [DATE]
Status: Draft
Input: User description: "$ARGUMENTS"
Cross-Platform Spec: <!-- Link to meshtastic/design/features/ spec, or "N/A β platform-specific only" with justification -->
Summary
<!--
Provide a brief (2-3 sentence) summary of the feature, its purpose, and what
user problem it solves. Mention which modules are primarily affected.
CROSS-PLATFORM CHECK: Before writing this spec, check meshtastic/design/features/
for an existing cross-platform behavior spec. If one exists, this spec should describe
the Android-specific scope and acceptance criteria β not redefine the cross-platform
behavior. If none exists and this feature affects multiple platforms, create one first
using the TEMPLATE.md in that repo.
-->
Goals
<!--
List 3-5 goals this feature achieves. Be specific and measurable.
-->
Non-Goals
<!--
Explicitly state what this feature does NOT do to prevent scope creep.
-->
User Scenarios & Testing (mandatory)
<!--
IMPORTANT: User stories should be PRIORITIZED as user journeys ordered by importance.
Each user story/journey must be INDEPENDENTLY TESTABLE - meaning if you implement just ONE of them,
you should still have a viable MVP (Minimum Viable Product) that delivers value.
Assign priorities (P1, P2, P3, etc.) to each story, where P1 is the most critical.
Think of each story as a standalone slice of functionality that can be:
β’ Developed independently
β’ Tested independently
β’ Deployed independently
β’ Demonstrated to users independently
-->
User Story 1 - [Brief Title] (Priority: P1)
[Describe this user journey in plain language]
Why this priority: [Explain the value and why it has this priority level]
Independent Test: [Describe how this can be tested independently - e.g., "Can be fully tested by [specific action] and delivers [specific value]"]
Acceptance Scenarios:
1. Given [initial state], When [action], Then [expected outcome]
2. Given [initial state], When [action], Then [expected outcome]
User Story 2 - [Brief Title] (Priority: P2)
[Describe this user journey in plain language]
Why this priority: [Explain the value and why it has this priority level]
Independent Test: [Describe how this can be tested independently]
Acceptance Scenarios:
1. Given [initial state], When [action], Then [expected outcome]
User Story 3 - [Brief Title] (Priority: P3)
[Describe this user journey in plain language]
Why this priority: [Explain the value and why it has this priority level]
Independent Test: [Describe how this can be tested independently]
Acceptance Scenarios:
1. Given [initial state], When [action], Then [expected outcome]
[Add more user stories as needed, each with an assigned priority]
Edge Cases
<!--
ACTION REQUIRED: The content in this section represents placeholders.
Fill them out with the right edge cases.
-->
β’ What happens when [boundary condition]?
β’ How does system handle [error scenario]?
Requirements (mandatory)
<!--
ACTION REQUIRED: The content in this section represents placeholders.
Fill them out with the right functional requirements.
-->
Functional Requirements
β’ FR-001: System MUST [specific capability]
β’ FR-002: System MUST [specific capability]
Non-Functional Requirements
β’ NFR-001: [Performance, accessibility, or quality requirement]
Architecture
<!--
ACTION REQUIRED: Describe the layout structure, data flow, and key components.
Include ASCII diagrams for visual layouts and Mermaid flowcharts for data flow.
Reference existing composables from core:ui where applicable.
-->
Key Components
<!--
List the components involved in this feature with their module paths and purpose.
Reference existing components from core:ui, core:model, etc. where applicable.
-->
ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββ¬ββββββββββββββββββ
β Component β Module / File β Purpose β
ββββββββββββββββββββββββΌββββββββββββββββββββββββββββΌββββββββββββββββββ€
β [Component] β T383838feature/[name]/component/ β [Purpose] β
β [Existing Component] β T383838core/ui/component/ β [Reuse purpose] β
ββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββ΄ββββββββββββββββββ
Source-Set Impact
<!--
ACTION REQUIRED: Identify which KMP source sets this feature affects.
All business logic and UI MUST be in commonMain (Constitution I, III).
-->
βββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββ
β Source Set β Impact β Justification β
βββββββββββββββΌβββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββ€
β T383838commonMain β [New files / Modified files] β All business logic and UI β
β T383838androidMain β [None / Platform integration only] β [Justification if needed] β
β T383838jvmMain β [None / Shared JVM code] β [Justification if needed] β
βββββββββββββββ΄βββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββ
Design Standards Compliance
<!--
ACTION REQUIRED: Note any UI elements that must be reviewed against the
Meshtastic Client Design Standards (Constitution V). Flag intentional
deviations with rationale.
-->
β’ [ ] New screens reviewed against design standards
β’ [ ] M3 component selection verified (e.g., T383838SwitchPreference not raw T383838Switch)
β’ [ ] Accessibility: TalkBack semantics, touch targets, color-independent info
β’ [ ] Typography: T383838titleMediumEmphasized for emphasis, M3 scale for hierarchy
Privacy Assessment
<!--
ACTION REQUIRED: Confirm this feature does not violate Constitution IV.
If the feature handles any sensitive data, document the safeguards.
-->
β’ [ ] No PII, location data, or cryptographic keys logged or exposed
β’ [ ] No new network calls that transmit user data
β’ [ ] Generated proto not hand-edited (the T383838org.meshtastic:protobufs Maven dependency)
Success Criteria (mandatory)
<!--
ACTION REQUIRED: Define measurable success criteria.
These must be technology-agnostic and measurable.
-->
Measurable Outcomes
β’ SC-001: [Measurable metric]
β’ SC-002: [Measurable metric]
Assumptions
<!--
ACTION REQUIRED: The content in this section represents placeholders.
Fill them out with the right assumptions based on reasonable defaults
chosen when the feature description did not specify certain details.
-->
β’ All business logic and UI composables reside in T383838commonMain source set
β’ String resources added to T383838core/resources/src/commonMain/composeResources/values/strings.xml
β’ Icons use T383838MeshtasticIcons (from T383838core/ui/icon/)
β’ Float values pre-formatted with T383838NumberFormatter.format() (CMP constraint)
β’ [Additional feature-specific assumptions]
Served by rngit 1.5.4 - Generated in 0.02s